<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>js中for_of和for_in区别</title>
	</head>
	<body>

		js中for_of和for_in区别:
		1.for..in:
		-- es5的规范；
		-- 可以遍历数组和对象的可枚举属性，推荐使用来遍历对象；
		-- 循环出的是key。如果是数组，它的每个元素的索引被视为一个属性，对象就输出对象的键名称；
		-- 遍厉数组无法保证输出值的顺序

		2.for...of：
		-- es6的规范；
		-- 循环出的是value，for-of的出现是为了方便迭代器的使用；
		-- 不能循环普通的对象，需要通过和Object.keys()或者Object.values()搭配使用: for(let key of Object.keys(object)){}；
		-- 可以保证输出顺序

		3.共同点：二者都可以用来遍历对象和数组，for of更强大，推荐使用for of;
	</body>

	<script type="text/javascript">
		// 例子：
		var arr = [11, 22, 33, 44];
		var obj = {
			a: 111,
			b: 222
		}

		console.log("-----for-in遍历数组：")
		for (let key in arr) {
			console.log(key)//打印的是数组的下标 0  1  2  3
		}

		console.log("-----for-in遍历对象：")
		for (let key in obj) {
			console.log(key)//打印是的对象的键 a  b
		}

		console.log("-----for-of遍历数组：")
		for (let value of arr) {
			console.log(value)//打印的是数组的值11 22 33  44
		}

		console.log("-----for-of遍历对象：")
		for (let value of Object.keys(obj)) {
			console.log(value)//Object.keys打印是的对象的键a  b;  Object.values(obj)打印是的对象的值:11  22
		}
	</script>
</html>
